Flash memory controller, particularly NAND flash, designs are placing higher throughput demands on Bose-Chaudhuri-Hocquenghem (BCH) decoder designs with limited hardware resources. The primary function of the BCH decoder is to detect and correct bit errors in a received codeword.
The BCH decoding process has four major steps. The first step is to calculate a syndrome from the received codeword. The second step is to take the syndrome and calculate the error locator polynomial, σ(x). This second step is typically performed using the Berlekamp-Massey Algorithm (BMA). The third step is to find the roots of σ(x), which correspond to bit error locations in the received codeword. This third step is typically performed using the Chien Search algorithm. The fourth step is to correct the bits that have been identified as errors.